package stage;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.stage.StageStyle;

// 透明窗口
public class TransParentStage extends Application {
	private Pane root = new Pane();
	private Button closeButton;
	private Button minButton;
	private Button maxButton;
	private double initX;	// 记录拖拽面板时鼠标和窗口的距离
	private double initY;
	
	public static void main(String[] args) {
		launch(args);
	}
	
	@Override
	public void start(Stage stage) {
		
		// 设置圆角背景
		root.setBackground(new Background(new BackgroundFill(Color.ORANGE, new CornerRadii(30), new Insets(0))));
		
		closeButton = new Button("X");
		closeButton.setPrefSize(30, 30);
		
		maxButton = new Button("口");
		maxButton.setPrefSize(30, 30);
		maxButton.setTranslateX(30);
		
		minButton = new Button("—");
		minButton.setPrefSize(30, 30);
		minButton.setTranslateX(60);
		root.getChildren().addAll(closeButton, maxButton, minButton);
		
		Scene scene = new Scene(root, 700, 500);
		scene.setFill(Color.TRANSPARENT);		// 场景颜色透明
		stage.setScene(scene);
		stage.initStyle(StageStyle.TRANSPARENT);	// 窗口样式透明
		stage.show();
		
		// 事件
		// 拖拽面板
		root.setOnMousePressed(e -> {
			initX = e.getScreenX() - stage.getX();
			initY = e.getScreenY() - stage.getY();
		});
		root.setOnMouseDragged(e -> {
			stage.setX(e.getScreenX() - initX);
			stage.setY(e.getScreenY() - initY);
		});
		
		// 关闭窗口
		closeButton.setOnMouseClicked(e -> stage.close());
				
		// 最小化窗口(设置最小化为真,而退出最小化为系统功能)
		minButton.setOnMouseClicked(e -> stage.setIconified(true));
		
		// 最大化窗口(setFullScreen进入全屏)
		maxButton.setOnMouseClicked(e -> {
			if(stage.isMaximized()) {
				stage.setMaximized(false);		// 退出最大化
			} else {
				stage.setMaximized(true);		// 最大化
			}
		});
	}
}
